﻿using System;
using System.Data;
using System.Collections.Generic;
using System.Collections;
using log4net;
using FSS.BLL.Entities;
namespace FSS.BLL.Services
{


    /// <summary>
    /// VoucherService object for Ibatis mapped table 'Voucher'.
    /// </summary>
    public class VoucherService : IVoucherService
    {

        private static readonly ILog log = LogManager.GetLogger(typeof(VoucherService).Name);
        private static volatile VoucherService _VoucherService = null;
        #region VoucherService
        public static VoucherService GetInstance()
        {
            if (_VoucherService == null)
            {
                lock (typeof(VoucherService))
                {
                    if (_VoucherService == null) // double-check
                        _VoucherService = new VoucherService();
                }
            }
            return _VoucherService;
        }
        public VoucherService()
        {
            //
            // TODO: Add constructor logic here
            //
        }

        #endregion
        #region VoucherInService
        /// <summary>
        /// Tự động thêm mới or cập nhật lại phiếu nhập
        /// </summary>
        /// <param name="obj">VoucherInEntity Đối tượng</param>
        /// <returns>Mã của phiếu nhập</returns>
        public Int64 InsertUpdate(VoucherEntity obj)
        {
            VoucherEntity resul = ExecuteQueryForObject<VoucherEntity>("VoucherInsertUpdateAuto", obj);
            return resul.VoucherId;
          
        }
        /// <summary>
        /// Lấy đối tượng theo mã chính
        /// </summary>
        /// <param name="VoucherInId">Mã phiếu nhập</param>
        /// <returns>Đối tượng phiếu nhập</returns>v
        public VoucherEntity GetEntityByPrimaryKey(Int64 VoucherId)
        {
           
                VoucherEntity objE = new VoucherEntity
                {
                    VoucherId = VoucherId
                };
                return ExecuteQueryForObject<VoucherEntity>("VoucherLoadByPrimaryKey", objE);
           
        }
        public IList<VoucherEntity> SearData(VoucherEntity Parramter)
        {

            return ExecuteQueryForList<VoucherEntity>("VoucherSearchData", Parramter);
          
        }
        public IList<VoucherEntity> TranferStockSearchData(VoucherEntity _voucherE)
        {
            try
            {
                return ExecuteQueryForList<VoucherEntity>("VoucherTranferStockSearchData", _voucherE);
            }
            catch (Exception ex) { 
                return new List<VoucherEntity>();
            }

        }
        public IList<VoucherEntity> VoucherInReturnSearch(VoucherEntity Parramter)
        {

            return ExecuteQueryForList<VoucherEntity>("VoucherInReturnSearch", Parramter);

        }
        #endregion
    }
}